package shape;

public class Shape {
    protected double area ; // 为了让子类能够访问 area 变量，这里修饰符为 protected
    protected String type ; // 为了让子类能够访问 area 变量，这里修饰符为 protected
    public void show(){
        // 在 Shape 类中 show 方法除了输出语句外，没有任何其它代码
        System.out.println( this.type + "的面积为" + this.area );
    }
}

class Triangle extends Shape{
    protected double firstEdge ;
    protected double secondEdge ;
    protected double thirdEdge ;
    public Triangle(){
        this.type="三角形";
        // 可以在这里完成对 type 的初始化
    }
    public void calculate() {
        this.area=0.25*Math.sqrt((this.firstEdge+this.secondEdge+this.thirdEdge)*(this.firstEdge+this.secondEdge-this.thirdEdge)*(this.firstEdge-this.secondEdge+this.thirdEdge)*(this.thirdEdge-this.firstEdge+this.secondEdge));
        // 在这里计算三角形的面积，并将面积存储到 area 变量中 ( area 是从父类继承的、可见的实例变量 )
    }
    public void description() {
        System.out.println("三角形三边长度为："+this.firstEdge+"    "+this.secondEdge+"    "+this.thirdEdge);
        show();
        // 在这里输出三角形基本信息(比如三边的长度)
        // 最后通过调用从父类继承的、可见的 show 方法输出 三角形的面积
    }
}


class Circle extends Shape{
	    protected double radius;
        public Circle(){
            this.type="圆";
        }
        public void calculate() {
            this.area=3.14*Math.pow(this.radius, 2);
        }
        public void description() {
            System.out.println("圆的半径为："+this.radius);
            show();
        }
}